﻿#ifndef EXPRESSION_H
#define EXPRESSION_H

#include <QString>
#include <iostream>
#include "pileaffichage.h"
#include "rationnel.h"
#include "complexe.h"
#include "exception.h"
/**
 \file expression.h
 \brief Expression
 \author Baptiste Pirault et  Hugo Dubois
 \date 07/06/2012
 \version 1
 **/
class expression
{
public:
	//! \brief constructeur par défaut
    expression(){}
	
	//! \brief constructeur
	//! \param *p : pointeur sur une pile d'affichage
	//! Prend en argument la pile d'affichage
    expression(PileAffichage *p):pA(p){}
	
	//! \brief Surcharge de l'opérateur
	//! \param &other : QString du texte à rajouter
	//! Ajoute à l'attribut text la valeur de other
	//! Concaténation de chaine de texte
    QString& operator+= ( const QString & other );
	
	//! \brief retour en arrière
    void back();
	
	//! \brief Evalue l'expression
	//! 
	//! Prend en argument des pointeurs sur les différents ensembles gérés	
    int eval(double * x,Rationnel * r,complexe * z, double angle = 1)const;
private:
	//! \brief Pointeur vers la pile d'affichage
    PileAffichage *pA;
	
	// \brief Attribut où est stocké l'expression
    QString text;
};
#endif // EXPRESSION_H
